home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DDJMAG / DDJ8801.ZIP / NARO.ZIP / LOC.H < prev    next >
Text File  |  1987-10-30  |  3KB  |  103 lines

  1. /*
  2.     Copyright (C) 1987 Paradigm Systems Inc.  All rights reserved.
  3. */
  4.  
  5. #define    MAX_TOKEN        80
  6. #define    MAX_LINE            80
  7. #define    FILENAME            80
  8. #define    COMMAND_LINE    256
  9.  
  10. #define    PAGE_SIZE        512
  11.  
  12. #define    ERROR        0        /* Error condition exists */
  13. #define    OK            1        /* No error(s) detected */
  14.  
  15. #define    T_EOL        -2        /* Reached the end of a line */
  16. #define    T_ERROR    -1        /* Detected an error condition */
  17. #define    T_OK        0        /* Everything fine */
  18. #define    T_OCT        1        /* Octal format integer */
  19. #define    T_DEC        2        /* Decimal format integer */
  20. #define    T_HEX        3        /* Hexidecimal format integer */
  21. #define    T_WORD    4        /* Symbol character string */
  22. #define    T_OP        5        /* Operator character string */
  23.  
  24. typedef    enum    { FALSE = 0, TRUE }    BOOLEAN ;
  25.  
  26. #define    low_byte(x)        ((x) & 0xff)
  27. #define    high_byte(x)    (low_byte((x) >> 8))
  28. #define    dim(x)            (sizeof(x)/sizeof(x[0]))
  29.  
  30. typedef    struct {
  31.         unsigned int    signature ;
  32.         unsigned int    length ;
  33.         unsigned int    pages ;
  34.         unsigned int    reloc_items ;
  35.         unsigned int    header_size ;
  36.         unsigned int    min_para ;
  37.         unsigned int    max_para ;
  38.         unsigned int    stack_seg_disp ;
  39.         unsigned int    initial_sp ;
  40.         unsigned int    checksum ;
  41.         unsigned int    initial_pc ;
  42.         unsigned int    code_seg_disp ;
  43.         unsigned int    first_reloc_item ;
  44.         unsigned int    overlay_num ;
  45.     } EXE_HEADER ;
  46.  
  47.  
  48. typedef    struct sym_list  {
  49.                 struct sym_list *next ;
  50.                 char    name[32] ;
  51.                 unsigned int    value ;
  52.                 unsigned char    type ;
  53.             } SYMBOL_LIST ;
  54.  
  55. typedef    struct  seg_descriptor  {
  56.                 struct seg_descriptor    *next ;
  57.                 long    position ;
  58.                 char    name[32] ;
  59.                 char    class[32] ;
  60.                 unsigned int    vseg ;
  61.                 unsigned int    pseg ;
  62.                 unsigned int    offset ;
  63.                 unsigned int    len ;
  64.                 int    inited ;
  65.                 int    romable ;
  66.                 unsigned int    symbols ;
  67.                 SYMBOL_LIST    *symbol_list ;
  68.             } SEG_DESCRIPTOR ;
  69.  
  70. char    *load_exe_file() ;
  71. SEG_DESCRIPTOR    *build_seg_list() ;
  72.  
  73. int    get_ch() ;
  74. int    unget_ch() ;
  75. char    *get_cmd() ;
  76. char    *get_line() ;
  77.  
  78. int get_token() ;
  79.  
  80. char    *get_mem(unsigned long) ;
  81. void    free_mem(char *) ;
  82.  
  83. char    *process_command_line() ;
  84. void    read_symbol_table(SEG_DESCRIPTOR *) ;
  85.  
  86. void    output_hex_OMF(int, SEG_DESCRIPTOR *, unsigned char *) ;
  87. void    open_file_system() ;
  88. void    close_file_system() ;
  89. void    break_handler() ;
  90.  
  91. #define    DATA_RECORD        0
  92. #define    EOF_RECORD        1
  93. #define    ADDR_RECORD        2
  94. #define    START_RECORD    3
  95.  
  96. void    write_START_record(int, unsigned char *) ;
  97. void    write_ADDR_record(int, unsigned int ) ;
  98. void    write_DATA_record(int, unsigned int, unsigned char *,
  99.                                     unsigned int ) ;
  100. void    write_EOF_record(int) ;
  101. void    output_hex_record(int, unsigned char, unsigned int, 
  102.                                     unsigned char *, unsigned char) ;
  103.